#!/bin/bash

# 需要管理的虚拟机范围

IP_RANGE_BEGIN="25"
IP_RANGE_END="25"
VM_PRE="ubuntu24-16-"
SNAP_SHOT="init.1"
FILE_PATH="/mnt/user/domains"

# 虚拟机选项 
#创建虚拟机快照 -c 
#查看虚拟机快照 -l
#还原虚拟机快照 -a
#删除虚拟机快照 -d
ARGS="-c"


case $ARGS in
-c)
    for((i=IP_RANGE_BEGIN;i<=IP_RANGE_END;i++));do

	    vm_state="$(virsh domstate $VM_PRE$i)"
	    if [ "$vm_state" != "shut off" ];then
	    	echo "无法创建快照，请先关闭该虚拟机！"
			continue
	    fi
		echo "创建$FILE_PATH/$VM_PRE$i/$VM_PRE$i.img的新快照$SNAP_SHOT"
		qemu-img snapshot -c $SNAP_SHOT $FILE_PATH/$VM_PRE$i/$VM_PRE$i.img
    done
    ;;
-l)
    for((i=IP_RANGE_BEGIN;i<=IP_RANGE_END;i++));do
		echo "列出$FILE_PATH/$VM_PRE$i/$VM_PRE$i.img的所有快照"
		qemu-img snapshot -l  $FILE_PATH/$VM_PRE$i/$VM_PRE$i.img
    done
    ;;
-a)
    for((i=IP_RANGE_BEGIN;i<=IP_RANGE_END;i++));do
	    vm_state="$(virsh domstate $VM_PRE$i)"
	    if [ "$vm_state" != "shut off" ];then
	    	echo "无法创建快照，请先关闭该虚拟机！"
			continue
	    fi
		echo "还原$FILE_PATH/$VM_PRE$i/$VM_PRE$i.img到快照$SNAP_SHOT"
		qemu-img snapshot -a $SNAP_SHOT $FILE_PATH/$VM_PRE$i/$VM_PRE$i.img
    done
    ;;
-d)
    for((i=IP_RANGE_BEGIN;i<=IP_RANGE_END;i++));do
	    vm_state="$(virsh domstate $VM_PRE$i)"
	    if [ "$vm_state" != "shut off" ];then
	    	echo "无法创建快照，请先关闭该虚拟机！"
			continue
	    fi
		echo "删除$FILE_PATH/$VM_PRE$i/$VM_PRE$i.img到快照$SNAP_SHOT"
		qemu-img snapshot -d $SNAP_SHOT $FILE_PATH/$VM_PRE$i/$VM_PRE$i.img
    done
    ;;
*)
    echo "请检查ARGS变量是否设置的正确！"
    exit
    ;;
esac
